import java.io.*;
import java.util.Arrays;

/**
 * 编写程序，实现把一个已存在的扩展名为 .txt 文本文件复制到另一个文本文件中。
 */
public class Q2 {

    /**
     * 文件复制
     *
     * @param src  源文件
     * @param dest 目的文件
     */
    public static void fileCopy(String src, String dest) {
        argumentChecker(src);

        int len;
        byte[] buffer = new byte[1024 * 4];
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest))) {
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 参数校验器。要求 fn 存在且为文件
     *
     * @param fn 文件路径
     */
    private static void argumentChecker(String... fn) {
        Arrays.stream(fn).forEach(o -> {
            File file = new File(o);
            if (!file.exists() || !file.isFile()) {
                throw new IllegalArgumentException("fn: " + o);
            }
        });
    }

}
